package com.lfb.tcp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerThread implements Runnable {
	/*
	 * 服务 器主机socket通信监听的端口号
	 * 客户端与服务器端所指定的端口号要一致
	 */
	private int port;
	
	//构造方法
	public ServerThread(int port) {
		super();
		this.port = port;
	}


	@Override
	public void run() {
		// 创建一个serversocket对象
		try {
			ServerSocket  serverSocket = new ServerSocket(port);
			//服务器一般处于一直运行的状态，用于随时响应用户的请求
			while (true) {
				//创建客户端建立连接的socket对象（服务员角色）
				Socket socket0 = serverSocket.accept();
				//当前服务器端创建的socket0对象，会与客户端socket进行通信
				/****服务器端使用输入流接收客户端发送的信息****/
				BufferedReader br =  new BufferedReader(new InputStreamReader(socket0.getInputStream(),"utf-8"));
				//读入客户端信息
				String strM_c = br.readLine();
				while (strM_c != null && !strM_c.equals("eof")) {
					//输出信息
					System.out.println("服务器端接收信息:" + strM_c +";来自于IP：" + socket0.getInetAddress());
					strM_c = br.readLine();
				}
				//关闭资源
				//br.close();
				
				
				/************服务器端使用输出流发送消息*********/
				//获取服务器端输出流对象
				BufferedWriter  bw= new BufferedWriter(new OutputStreamWriter(socket0.getOutputStream(), "utf-8"));
				//服务器端发送的消息
				String 	strM_s	= "你好，我是服务器";
				//将消息数据流通过网络发送出去
				bw.write(strM_s);
				//write没有行结束符，单独写行结束符
				bw.write("\n");
				//发送消息结束符
				bw.write("eof\n");
				//清空缓存
				bw.flush();
				//输出信息
				System.out.println("服务器端发送消息" + strM_s);
				//关闭资源
				//bw.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
}
